home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / vdl020d.zip / ASPILOW.DOC < prev    next >
Text File  |  1993-04-14  |  6KB  |  247 lines

  1. {
  2.  ════════════════════════════════════════════════════════════════════════════
  3.  
  4.  Visionix ASPI Low-level Functions Unit (VASPILOW)
  5.  Copyright 1991,92,93 Visionix
  6.  ALL RIGHTS RESERVED
  7.  
  8.  ────────────────────────────────────────────────────────────────────────────
  9.  
  10.  Revision history in reverse chronological order:
  11.  
  12.  Initials  Date      Comment
  13.  ────────  ────────  ────────────────────────────────────────────────────────
  14.  
  15.  mep       02/11/93  Cleaned up code for beta release
  16.  
  17.  mep       02/08/93  Sync with beta 0.12 release
  18.  
  19.  ════════════════════════════════════════════════════════════════════════════
  20. }
  21.  
  22. Unit ASPILow;
  23.  
  24.  
  25. Uses
  26.  
  27.   DOS;
  28.  
  29. {────────────────────────────────────────────────────────────────────────────}
  30.  
  31. Const
  32.  
  33.   asReqInProc   = $00;
  34.   asReqDone     = $01;
  35.   asReqAborted  = $02;
  36.   asReqDoneErr  = $03;
  37.   asReqInvalid  = $04;
  38.   asReqBadHost  = $05;
  39.   asReqBadDev   = $06;
  40.  
  41. Type
  42.  
  43.   TError = WORD;
  44.  
  45.  
  46.  
  47.   {---------------------------}
  48.   { Ascii ID for Host Inquiry }
  49.   {---------------------------}
  50.  
  51.   TAspiAsciiID = ARray[1..16] of CHAR;
  52.   PAspiAsciiID = ^TAspiAsciiId;
  53.  
  54.  
  55.  
  56.   {--------------------------}
  57.   { Host Inquiry Unique data }
  58.   {--------------------------}
  59.  
  60.   TAspiHostInqUnique = Array[1..16] of BYTE;
  61.   PAspiHostInqUnique = ^TAspiHostInqUnique;
  62.  
  63.  
  64.  
  65.   {---------------------}
  66.   { ASPI Caps structure }
  67.   {---------------------}
  68.  
  69.   TAspiCaps = RECORD
  70.  
  71.     Reserved : BYTE;
  72.  
  73.   END;
  74.  
  75.   PAspiCaps = ^TAspiCaps;
  76.  
  77.  
  78.  
  79.   {---------------------}
  80.   { Host Inquiry Packet }
  81.   {---------------------}
  82.  
  83.   TAspiHostInqPacket = RECORD
  84.  
  85.     Command             : BYTE;
  86.     Status              : BYTE;
  87.     HostNum             : BYTE;
  88.     SCSIReqFlags        : BYTE;
  89.     Reserved            : LONGINT;
  90.  
  91.     NumHosts            : BYTE;
  92.     HostSCSIid          : BYTE;
  93.     SCSIManagerID       : TAspiAsciiID;
  94.     HostAdapterID       : TAspiAsciiID;
  95.     HostUniqueParams    : TAspiHostInqUnique;
  96.  
  97.   END;
  98.  
  99.   PAsipHostInqPacket = ^TAspiHostInqPacket;
  100.  
  101.  
  102.  
  103.   {---------------------}
  104.   { Get Dev Type Packet }
  105.   {---------------------}
  106.  
  107.   TAspiGetDevTypePacket = RECORD
  108.  
  109.     Command             : BYTE;
  110.     Status              : BYTE;
  111.     HostNum             : BYTE;
  112.     SCSIReqFlags        : BYTE;
  113.     Reserved            : LONGINT;
  114.  
  115.     Target              : BYTE;
  116.     LUN                 : BYTE;
  117.     DevType             : BYTE;
  118.  
  119.   END;
  120.  
  121.   PAspiGetDevTypePacket = ^TAspiGetDevTypePacket;
  122.  
  123.  
  124.  
  125.   {-----------------}
  126.   { Exec SCI Packet }
  127.   {-----------------}
  128.  
  129.   TAspiExecSCSIPacket = RECORD
  130.  
  131.     Command             : BYTE;
  132.     Status              : BYTE;
  133.     HostNum             : BYTE;
  134.     SCSIReqFlags        : BYTE;
  135.     Reserved            : LONGINT;
  136.  
  137.     Target              : BYTE;
  138.     LUN                 : BYTE;
  139.     DataSize            : LONGINT;
  140.     SenseSize           : BYTE;
  141.     DataBuff            : POINTER;
  142.     SRBLink             : POINTER;
  143.     CDBSize             : BYTE;
  144.     HostStatus          : BYTE;
  145.     DevStatus           : BYTE;
  146.     PostRoutine         : POINTER;
  147.     ASPIWorkSpace       : Array[1..34] of BYTE;
  148.  
  149.     CDB                 : Array[1..16+64] of BYTE;
  150.  
  151.   END;
  152.  
  153.   PAspiExecSCSIPacket = ^TAspiExecSCSIPacket;
  154.  
  155.  
  156.  
  157.   {-----------------------------}
  158.   { ASPI Get Int 13 info packet }
  159.   {-----------------------------}
  160.  
  161.   TAspiGetInt13InfoPacket = RECORD
  162.  
  163.     Command             : BYTE;
  164.     Status              : BYTE;
  165.     HostNum             : BYTE;
  166.     SCSIReqFlags        : BYTE;
  167.     Reserved            : LONGINT;
  168.  
  169.     Target              : BYTE;
  170.     LUN                 : BYTE;
  171.     Int13Flags          : BYTE;
  172.     Int13Drive          : BYTE;
  173.     PrefHeadTrans       : BYTE;
  174.     PrefSecTrans        : BYTE;
  175.     Reserved2           : Array[1..10] of BYTE;
  176.  
  177.   END;
  178.  
  179.   PAspiGetInt13InfoPacket = ^TAspiGetInt13InfoPacket;
  180.  
  181.  
  182.  
  183.   {-----------------------------}
  184.   { ASPI Host Inquiry structure }
  185.   {-----------------------------}
  186.  
  187.   TAspiHostInq = RECORD
  188.  
  189.     HostSCSIid          : BYTE;
  190.     HostAdapterID       : TAspiAsciiID;
  191.     SCSIManagerID       : TAspiAsciiID;
  192.     HostUniqueParams    : TAspiHostInqUnique;
  193.  
  194.   END;
  195.  
  196.   PAspiHostInq = ^TAspiHostInq;
  197.  
  198.  
  199.  
  200.   {-----------------------------------}
  201.   { ASPI Int13 (Drive) Info structure }
  202.   {-----------------------------------}
  203.  
  204.   TAspiInt13Info = RECORD
  205.  
  206.     Int13Flags          : BYTE;
  207.     Int13Drive          : BYTE;
  208.     PrefHeadTrans       : BYTE;
  209.     PrefSecTrans        : BYTE;
  210.  
  211.   END;
  212.  
  213.   PAspiInt13Info = ^TAspiInt13Info;
  214.  
  215.  
  216. {────────────────────────────────────────────────────────────────────────────}
  217.  
  218. Procedure ASPI_GetCaps(           AspiCaps            : PAspiCaps    );
  219.  
  220. Function  ASPI_LibInit : WORD;
  221.  
  222. Procedure ASPI_ExecPacket(        ASPIPacket          : POINTER      );
  223.  
  224. Function  ASPI_GetNumHosts : BYTE;
  225.  
  226. Function  ASPI_HostInquiry(       HostNum             : BYTE;
  227.                                   HostInq             : PAspiHostInq ):TError;
  228.  
  229. Function  ASPI_GetDevType(        HostNum             : BYTE;
  230.                                   Target              : BYTE;
  231.                                   Lun                 : BYTE    ):BYTE;
  232.  
  233.  
  234. Function  ASPI_GetINT13Info(      HostNum             : BYTE;
  235.                                   Target              : BYTE;
  236.                                   Lun                 : BYTE;
  237.                                   Int13Info           : PAspiInt13Info ):TError;
  238.  
  239. {────────────────────────────────────────────────────────────────────────────}
  240.  
  241. Var
  242.  
  243.   ASPIEntry : POINTER;
  244.  
  245. {────────────────────────────────────────────────────────────────────────────}
  246.  
  247.